<?php
namespace core\lib;

class upload
{
	//文件上传表单的文件名(<input name='name' type='file'/>)
	private $name;
	public function __construct($name)
	{
		$this->name = $name;
	}
	/*
		@param $name 
		@param $filename 保存的在服务器的名称
		@param $path 保存在服务器的路径(/file目录下的相对路径)
		@return 文件返回文件大小
	*/
	public function save($filename, $path)
	{
		if(is_uploaded_file($_FILES[$this->name]['tmp_name'])){
			$arr = explode('.', $_FILES[$this->name]['name']);
			if(count($arr) > 1)
				$filename = $filename . '.' . end($arr);
			$resPath = 'file/'.$path.'/'.$filename;
			$path = UPLOAD . '/' . $path . '/' . $filename;
			$ok = move_uploaded_file($_FILES[$this->name]['tmp_name'], $path);
		
			return $resPath;
		}
		return false;
	}
	
	/*
		@param $name 为文件上传表单的文件名(<input name='name' type='file'/>)
		@return 文件返回文件大小,单位KB
	*/
	public function size()
	{
		return $_FILES[$this->name]["size"] / 1024.0;
	}
	
	/*
		@param $name 为文件上传表单的文件名(<input name='name' type='file'/>)
		@return 文件返回文件类型
	*/
	public function type()
	{
		return $_FILES[$this->name]['type'];
	}
	/*
		@param $name 为文件上传表单的文件名(<input name='name' type='file'/>)
		@return 文件成功上传返回false
				上传失败返回错误信息
	*/
	public function error()
	{
		$code = $_FILES[$this->name]['error'];
		if($code == UPLOAD_ERR_OK)
			return false;
		$info = "upload fail($code):";
		switch($code)
		{
			case UPLOAD_ERR_INI_SIZE:{
				$info .= "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
			}break;
			case UPLOAD_ERR_FORM_SIZE:{
				$info .="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
			}break;
			case UPLOAD_ERR_PARTIAL:{
				$info .= "文件只有部分被上传";
			}break;
			case UPLOAD_ERR_NO_FILE:{
				$info .= "没有文件被上传";
			}break;
			case UPLOAD_ERR_NO_TMP_DIR:{
				$info .= "找不到临时文件夹";
			}break;
			case UPLOAD_ERR_CANT_WRITE:{
				$info .= "文件写入失败";
			}break;
		}
		return $info;
	}
	public function debug()
	{
		p($_FILES);
	}
}